package main

import "fmt"

// 定义一个接口
type Animal interface {
	Speak() string
	Move() string
}

// 结构体 Dog 实现 Animal 接口的两个方法
type Dog struct {
}

func (d Dog) Speak() string {
	return "Woof!"
}

func (d Dog) Move() string {
	return "Running on four legs"
}

// 正确：Dog 实现了 Animal 接口
var a Animal = Dog{}

// 结构体 Cat 只实现一个方法
type Cat struct {
	Animal
}

func (c Cat) Speak() string {
	return "Meow!"
}

var b Animal = Cat{}

func changeMap(m map[int]string) map[int]string {
	m[1] = "2"
	return m
}

func main() {
	m := make(map[int]string)
	m[2] = ""

	m[1] = "1"
	m2 := changeMap(m)
	fmt.Println(m2)
}

func (c Cat) a() {

	c.Animal.Move()
}
